import { childrenProps, OptionsProps } from '@/components/ProForm/interface';
import { leftFormList } from '../../../basic/defaultForm';

interface ChildrenProps extends childrenProps {
  value: OptionsProps['type'];
}

/**验证规则 */
export const rulesOptions: childrenProps[] = [
  {
    label: '否',
    value: 'noRequired',
    type: 'option'
  },
  {
    label: '必填(blur)',
    value: 'requiredBlur',
    type: 'option'
  },
  {
    label: '必填(change)',
    value: 'requiredChange',
    type: 'option'
  },
  {
    label: '自定义',
    value: 'customRequired',
    type: 'option'
  }
];

/**验证规则映射规则 */
export const rulesOptionsMap: { [key: string]: any } = {
  noRequired: { required: false, message: '', trigger: 'blur' },
  requiredBlur: { required: true, message: '', trigger: 'blur' },
  requiredChange: { required: true, message: '', trigger: 'change' }
};

/**使用的插件 */
const usePlugInOptions: childrenProps[] = [
  {
    label: '中文转拼音',
    value: 'pinyin',
    type: 'option'
  },
  {
    label: '表单工具',
    value: 'formUtils',
    type: 'option'
  }
];

/**是否下拉选择 */
const selectOptions: childrenProps[] = [
  {
    label: '是',
    value: true,
    type: 'option'
  },
  {
    label: '否',
    value: false,
    type: 'option'
  }
];

/**选择下拉宽类型 */
const selectChildrenType: childrenProps[] = [
  {
    label: '字典',
    value: 'dict',
    type: 'option'
  },
  {
    label: '接口',
    value: 'api',
    type: 'option'
  },
  {
    label: '自定义',
    value: 'options',
    type: 'option'
  }
];

/**
 * 类型下拉选择
 */
const typeOptions: ChildrenProps[] = [];

for (let item of leftFormList) {
  typeOptions.push({
    label: item.label,
    value: item.value,
    type: 'option'
  });
}

/**
 * attrs 属性类型
 */
const attrsTypeOptions: childrenProps[] = [
  {
    label: '默认',
    value: '',
    type: 'option'
  },
  {
    label: '多行文本',
    value: 'textarea',
    type: 'option'
  },
  {
    label: '数字',
    value: 'number',
    type: 'option'
  },
  {
    label: '日期',
    value: 'date',
    type: 'option'
  },

  {
    label: '月',
    value: 'month',
    type: 'option'
  },
  {
    label: '日期时间',
    value: 'datetime',
    type: 'option'
  }
];

/**请求方式 */
const requestTypeOptions: childrenProps[] = [
  {
    label: 'get',
    value: 'get',
    type: 'option'
  },
  {
    label: 'post',
    value: 'post',
    type: 'option'
  }
];

/**
 * 日期类型
 */
const dateTypeOptions: childrenProps[] = [
  {
    label: '日期时间',
    value: 'datetime',
    type: 'option'
  },
  {
    label: '日期',
    value: 'date',
    type: 'option'
  },
  {
    label: '年',
    value: 'year',
    type: 'option'
  },
  {
    label: '多选年',
    value: 'years',
    type: 'option'
  },
  {
    label: '月',
    value: 'month',
    type: 'option'
  },
  {
    label: '多选月',
    value: 'months',
    type: 'option'
  },

  {
    label: '多选日期',
    value: 'dates',
    type: 'option'
  },

  {
    label: '周',
    value: 'week',
    type: 'option'
  },
  {
    label: '开始日期时间-结束日期时间',
    value: 'datetimerange',
    type: 'option'
  },
  {
    label: '开始日期-结束日期',
    value: 'daterange',
    type: 'option'
  },
  {
    label: '开始月-结束月',
    value: 'monthrange',
    type: 'option'
  },
  {
    label: '开始年-结束年',
    value: 'yearrange',
    type: 'option'
  }
];

/**
 * 日期格式
 */
const dateFormatOptions: childrenProps[] = [
  {
    label: 'YYYY-MM-DD',
    value: 'YYYY-MM-DD',
    type: 'option'
  },
  {
    label: 'YYYY-MM-DD HH:mm:ss',
    value: 'YYYY-MM-DD HH:mm:ss',
    type: 'option'
  },
  {
    label: 'YYYY-MM-DD HH:mm',
    value: 'YYYY-MM-DD HH:mm',
    type: 'option'
  }
];

export {
  selectOptions,
  typeOptions,
  selectChildrenType,
  requestTypeOptions,
  usePlugInOptions,
  dateTypeOptions,
  dateFormatOptions,
  attrsTypeOptions
};
